package com.fable.ntzw_ga.controller;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil;
import com.alibaba.excel.util.DateUtils;
import com.fable.common.constants.CommonConstant;
import com.fable.common.utils.ZipFileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author : 郭振虎
 * @Date : 2023/7/18
 * @Description :
 **/
@RestController
@RequestMapping("/ntzw_ga/file")
@Slf4j
@Api(tags = "文件管理")
public class FileController {

    @Value("${export.filePath}")
    String filePath;

    @ApiOperation(value = "geojson数据下载",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    @PostMapping("/geojson")
    public void downloadGeoJson(String geoJson,HttpServletResponse response) {

        String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtils.DATE_FORMAT_14));
        String path= filePath + File.separator+"Map" + File.separator ;
        long timeMillis = System.currentTimeMillis();
        String fullName = path + timeMillis + ".geojson";
        //写入文件
        FileUtil.writeUtf8String(geoJson,fullName);

        //方法一：封装工具类
        FileUtil.writeString(geoJson,fullName, CharsetUtil.CHARSET_GBK);
        ZipFileUtil.downloadZip("测试"+time+ CommonConstant.ZIP,path,response);

        //方法二：封装hutool工具类
        //获取该目录下全部的文件，getParent 根据文件的地址获取上一个目录路径
//        List<File> dirFile = FileUtil.loopFiles(FileUtil.getParent(fullName,1));
        //指定zip存放路径、获取目录下所有文件、true:压缩包中包含文件目录,false:压缩包中不包含目录
//        File zipFile = new File(filePath+"map.zip");
//        ZipFileUtil.generateZip(zipFile,dirFile,true,true);
//        ZipFileUtil.downloadZip(zipFile,response);


        // 使用Hutool，读取目录下所有文件（包含子文件夹），并过滤出.java文件
//        List<File> fileList = FileUtil.loopFiles(new File("D:/temp"), new FileFilter() {
//            @Override
//            public boolean accept(File pathname) {
//                if (pathname.getName().endsWith(".java")) {
//                    return true;
//                }
//                return false;
//            }
//        });
    }
}
